﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace com.creditos.util.liclUtil
{
    public static class Utilitario
    {
        public static string DarFormatoFecha(String strValorfecha)
        {
            DateTime datValorFecha = new DateTime();
            try
            {
                datValorFecha = DateTime.Parse(strValorfecha);
            }
            catch (Exception)
            {
                datValorFecha = DateTime.MinValue;
            }

            string strResultado = string.Empty;
            try
            {
                strResultado = datValorFecha.ToShortDateString();
            }
            catch (Exception)
            {
                strResultado = "01/01/1920";

            }
            return strResultado;
        }

        public static string DarFormatoDecimalCero(string valor, int nroDecimales)
        {
            string resultadoDefault = "0.00";
            string formato = "{0:n" + nroDecimales.ToString() + "}";
            string resultado = string.Empty;
            try
            {
                decimal valorDecimal = decimal.Parse(valor);
                resultado = string.Format(formato, valorDecimal);
                if (valorDecimal.Equals(0))
                {
                    resultado = resultadoDefault;
                }
            }
            catch (Exception)
            {
                resultado = resultadoDefault;

            }
            return resultado;

        }

        public static string DarFormatoDecimal(string valor, int nroDecimales)
        {
            string resultadoDefault = "-";
            string formato = "{0:n" + nroDecimales.ToString() + "}";
            string resultado = string.Empty;
            try
            {
                decimal valorDecimal = decimal.Parse(valor);
                resultado = string.Format(formato, valorDecimal);
                if (valorDecimal.Equals(0))
                {
                    resultado = resultadoDefault;
                }
            }
            catch (Exception)
            {
                resultado = resultadoDefault;

            }
            return resultado;

        }
        public static string DarFormatoDecimalPorcentaje(string valor, int nroDecimales)
        {

            string resultadoDefault = "-";
            string formato = "{0:n" + nroDecimales.ToString() + "}";
            string resultado = string.Empty;
            try
            {
                decimal valorDecimal = decimal.Parse(valor);
                resultado = string.Format(formato, valorDecimal);
                resultado = resultado + "%";
                if (valorDecimal.Equals(0))
                {
                    resultado = resultadoDefault;
                }
            }
            catch (Exception)
            {
                resultado = resultadoDefault;

            }
            return resultado;

        }

        public static string DarFormatoEntero(string valor)
        {
            string resultado = "0";
            try
            {
                Int64 temp = Int64.Parse(valor);
                resultado = temp.ToString();
            }
            catch (Exception)
            {
                resultado = "0";

            }
            resultado = resultado == "0" ? "-" : resultado;
            return resultado;
        }

        public static string DarFormatoEnteroCero(string strValor)
        {
            string strResultado = "0";
            try
            {
                int intIndice = strValor.IndexOf(".");
                if (intIndice > 0)
                {
                    strValor = strValor.Substring(0, intIndice);
                }

                int intIndiceComa = strValor.IndexOf(",");
                if (intIndiceComa > 0)
                {
                    strValor = strValor.Replace(",", "");
                }

                Int64 intTemp = Int64.Parse(strValor);

                strResultado = intTemp.ToString();
            }
            catch (Exception)
            {
                strResultado = "0";

            }
            strResultado = strResultado == "0" ? "0" : strResultado;
            return strResultado;
        }

        /// <summary>
        /// Listar Controles
        /// </summary>
        /// <param name="oControl">Se recorre lalista de controles interna</param>
        /// <param name="tipoControl">Tipo de control a devolver, 1: TextBox , 2:DropDownList</param>
        /// <returns></returns>
        public static List<Control> ListarControles(Control oControl, int tipoControl)
        {
            List<Control> lstControles = new List<Control>();
            //if (oControl is SiteMapPath) { }

            //else
            //{
                if (oControl.Controls.Count > 0)
                {
                    foreach (Control item in oControl.Controls)
                    {
                        try
                        {
                            List<Control> lstControlesInternos = new List<Control>();
                            lstControlesInternos = ListarControles(item, tipoControl);
                            if (lstControlesInternos.Count > 0)
                            {
                                lstControles.AddRange(lstControlesInternos);
                            }
                        }
                        catch (Exception ex)
                        {

                        }

                    }
                }

                else
                {
                    switch (tipoControl)
                    {
                        case 1:
                            if (oControl is TextBox)
                            {
                                lstControles.Add(oControl);
                            }
                            break;
                        case 2:
                            if (oControl is DropDownList)
                            {
                                lstControles.Add(oControl);
                            }
                            break;
                    }
                }


            //}

            
            return lstControles;
        }


        public static bool EsNumeroPositivoDecimal(string valorTexto)
        {
            try
            {
                if (valorTexto.Trim() == string.Empty) { return false; }
                if (valorTexto.Trim().Length == 0) { return true; }

                string cadena1 = "";
                valorTexto = valorTexto.Trim().Replace(",", "");

                int pos = 0;
                pos = valorTexto.IndexOf(".");
                int cantdec = 0;

                if (pos != -1)
                {
                    if (pos != 0)
                    {
                        cantdec = valorTexto.Length - pos - 1;
                        cadena1 = valorTexto.Substring(pos + 1, cantdec);
                        valorTexto = valorTexto.Substring(0, pos) + cadena1;
                    }
                    else
                    {
                        pos = valorTexto.IndexOf(",");
                        if (pos != 0)
                        {
                            cantdec = valorTexto.Length - pos - 1;
                            cadena1 = valorTexto.Substring(pos + 1, cantdec);
                            valorTexto = valorTexto.Substring(0, pos - 1) + cadena1;
                        }
                    }
                }

                while (valorTexto.Length > 0)
                {
                    string valorTemporal = valorTexto.Substring(valorTexto.Length - 1, 1);
                    int valorfinal = int.Parse(valorTemporal);
                    valorTexto = valorTexto.Substring(0, valorTexto.Length - 1);
                }
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }



        public struct AccionValidacion
        {
            public const string Error = "error";
            public const string Ok = "ok";
        }

        public struct Modo
        {
            public const string Nuevo = "nuevo";
            public const string Edicion = "edicion";
            public const string Lectura = "lectura";
        }

        public enum ModoInterfaz
        {
            ModoInicial,
            ModoBuscar,
            ModoNuevo,
            ModoEdicion
        }

        public struct UrlImagenResultadoProspecto
        {            
            public const string URLIMAGE_AMARILLO = "~/Image/amarillo.jpg";
            public const string URLIMAGE_VERDE = "~/Image/verde.jpg";
            public const string URLIMAGE_ROJO = "~/Image/rojo.jpg";
            public const string URLIMAGE_DEFAULT = "~/Image/default.jpg";
        }

        public static string DarFormatoFecha(DateTime valorfecha)
        {
            if (valorfecha == DateTime.MinValue) return string.Empty;
            string resultado = string.Empty;
            try
            {
                //DateTime valorfecha = DateTime.Parse(valor);
                resultado = valorfecha.ToShortDateString();
            }
            catch (Exception ex)
            {
                resultado = "01/01/0001";

            }
            return resultado;
        }
    }
}
